/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.uniminuto.bean;

import com.uniminuto.vo.TablaLetras;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;

/**
 *
 * @author diegoalejandro
 */
@ManagedBean(name = "tablaLetrasBean")
@RequestScoped
public class TablaLetrasBean {

    private char abeceda[] = {'.', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'Ñ', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
    private String nombreUsuario;
    private TablaLetras tablaLetrasVo;
    private List<TablaLetras> tablaLetrasList= new ArrayList<TablaLetras>();
    
    
    public TablaLetrasBean() {
    }

    public String getNombreUsuario() {
        return nombreUsuario;
    }

    public void setNombreUsuario(String nombreUsuario) {
        this.nombreUsuario = nombreUsuario;
    }

    public List<TablaLetras> getTablaLetrasList() {
        return tablaLetrasList;
    }

    public void setTablaLetrasList(List<TablaLetras> tablaLetrasList) {
        this.tablaLetrasList = tablaLetrasList;
    }
   
    

    /**
     * Busca la posición de la Letra que entra como parámetro y retorna la
     * posicion.
     *
     * @param letra
     * @return
     */
    public int buscarPosLetra(char letra) {
        int posicion = 0;
        for (int i = 1; i < this.abeceda.length; i++) {
            if (this.abeceda[i] == letra) {
                posicion = i;
                break;
            }
        }
        return posicion;
    }

    /**
     * conviuerte a mayúscula
     *
     * @param nombre
     */
    public String aMayuscula(String nombre) {
        nombre = nombre.toUpperCase();
        return nombre;
    }

    public char buscaLetraAnt(String palabra, int posicionLetraXBuscar) {
        char letraAnterior;
        int posicionReal = posicionLetraXBuscar - 1;
        if (posicionReal < 0) {
            letraAnterior = '_';
        } else {
            letraAnterior = palabra.charAt(posicionLetraXBuscar - 1);
        }
        return letraAnterior;
    }

    public char buscaLetraSig(String palabra, int posicionLetraXBuscar) {
        char letraSiguiente;
        int posicionReal = posicionLetraXBuscar + 1;
        if (posicionReal > palabra.length() - 1) {
            letraSiguiente = '_';
        } else {
            letraSiguiente = palabra.charAt(posicionLetraXBuscar + 1);
        }
        return letraSiguiente;
    }
    
    public void generarTabla(){
        //Pasarlo a Msyusculas para poderlo procesar.
        setNombreUsuario(aMayuscula(nombreUsuario));
        
        //Crear un nuevo Objeto Vo de Tabla Letras.
        for(int i=0; i<getNombreUsuario().length(); i++){
        this.tablaLetrasVo = new TablaLetras(getNombreUsuario().charAt(i), buscarPosLetra(getNombreUsuario().charAt(i)), buscaLetraAnt(getNombreUsuario(), i), buscaLetraSig(getNombreUsuario(), i));
        this.tablaLetrasList.add(tablaLetrasVo);
        }
        
        
    }
}
